package com.yh.pojo;

import com.github.pagehelper.PageInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author by 张晨光
 * @date 2023/11/2 11:44
 *  出问题：
 *      1.升级版本号：lombok 1.18.28;  2.7.17 jackson版本匹配;
 *      2.去掉版本号;
 *      3.属性前面加一个注解;@JackSonProperty
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Product {
    private Integer id;         //产品唯一序号，主键
    private String productNum;  //产品编号,人为取的编号;
    private String productName; //产品名称;
    private String cityName;    //城市名称;
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm")
    private Date departureTime;    //离开时间;*不要导错包.
    private Double productPrice;    //商品的价格;
    private  String productDesc;    //产品描述、备注;
    private Integer productStatus;  //产品状态; 0:关闭；1：开启;

    private String departureTimeStr;        //离开时间对应的日期时间格式,以字符串形式出现;
    private String productStatusStr;        //产品状态0：1；所对应的字符串格式；

    /**
     * 设置离开时间，参数：离开时间字符串
     * 后台选择的时候，页面的都是字符串;
     * @param departureTimeStr
     */
    public void setDepartureTimeStr(String departureTimeStr) {
        Date date=null;     //最开始的是null
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        //谁转换一下；这里输入的是一个参数：离开时间;
        //离开时间是客户选择，给我们的参数;
        try {
            date = sdf.parse(departureTimeStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        //这里需要设置一下，将客户选择离开时间的字符串，变成Product类的离开时间的成员变量.
        this.departureTime=date;
    }
    /**
     * 获取离开时间，返回一个字符串；
     * 从数据库获取时间;
     * @return
     */
    public String getDepartureTimeStr() {
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //现在的工作，是将时间格式，转换成字符串的方式，返回;
        //加上一个严格的判断，是为了防止前面插件，获取不到离开时间的问题。
        if(departureTime!=null)
            departureTimeStr=sdf.format(departureTime);
        return departureTimeStr;
    }

    /**
     * 根据产品状态，来设置产品0 1值
     * 从页面传递过来一个开启|关闭，设置，实体类的成员变量为0 1 productStatus
     * @param productStatusStr
     */
    public void setProductStatusStr(String productStatusStr) {
        this.productStatus=productStatusStr.equals("关闭")?0:1;
    }

    //根据产品的0 1 值，来设置产品状态字符串;

    /**
     * 根据数据库的0：关闭；1：开启;返回 到页面对应的字符串;
     * @return
     */
    public String getProductStatusStr() {
        productStatusStr=productStatus==0?"关闭":"开启";
        return productStatusStr;
    }

}
